<!-- 
//ES6之前并没有构造函数给我们提供extends继承，我们可以通过构造函数+原型专业模拟实现继承
被称之为组合继承
call() 调用这个函数，并且修改函数运行的this指向
fun.call(thisArg,arg2,arg2,...)
thisArg:当前调用函数this的指向对象
age1,age2：传递的其它参数
 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //1 call 方法1

        function fn(x, y) {
            console.log('我想喝手磨咖啡');
            console.log(this);   //这里的this指向window
            //当调用fn.call(o, 1, 2)时,这里的this就指向了下面这个o对象
            // console.log(x + y);
        }
        var o = {
            name: 'zhuhaoran'
        };

        //1.直接调用函数fn()
        fn();
        //2.call() 可以调用函数
        fn.call();  //呼叫函数，与上面一样可以调用函数

        //3.call可以改变这个函数的this指向并传参
        fn.call(this, 1, 2)  //注意这里的参数默认是this,是windo我，想要改变指向，直接写别的对象就可以了
        fn.call(o, 1, 2)    //这个函数里面的this指向这个o这个对象


        //可以修改this的函数指向也可以通过参数传值
     //一开始this指向这个fn函数，后面指向了o


    </script>
</body>

</html>